package br.com.salao.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.salao.bean.Funcionario;
import br.com.salao.dao.FuncionarioDao;
import br.com.salao.util.JpaUtil;

public class FuncionarioDaoImpl implements FuncionarioDao{
	
	private final GenericDao<Funcionario> dao;

	public FuncionarioDaoImpl(EntityManager em){
		dao = new GenericDao<Funcionario>(em,Funcionario.class);
		
	}

	@Override
	public Funcionario inserir(Funcionario funcionario) {
		return dao.salvar(funcionario);
	}

	@Override
	public Funcionario update(Funcionario funcionario) {		
		return dao.update(funcionario);
	}

	@Override
	public List<Funcionario> lista() {
		return dao.lista();
	}
	
	
	@SuppressWarnings("unchecked")
	public List<Funcionario> buscarFuncionariosPorIdEstabelecimento(int idEstabelecimento){
		
		EntityManager em =  JpaUtil.getEntityManager();

		List<Funcionario> funcionarios = null;

		try {		
			Query query = em.createQuery("from Funcionario f where f.estabelecimento.id like :idEstabelecimento");
			query.setParameter("idEstabelecimento", idEstabelecimento);
			funcionarios = (List<Funcionario>) query.getResultList();	
			
		} catch (Exception e) {
			
			e.printStackTrace();
			funcionarios = null;
			
		} finally{
			if(em != null){
				em.close();
			}
		}
		return funcionarios;			
	}
	
	public Funcionario buscarFuncionariosPorId(int id){
		
		EntityManager em =  JpaUtil.getEntityManager();

		Funcionario funcionario = null;

		try {		
			Query query = em.createQuery("from Funcionario f where f.id like :id");
			query.setParameter("id", id);
			funcionario = (Funcionario) query.getSingleResult();	
			
		} catch (Exception e) {
			
			e.printStackTrace();
			funcionario = null;
			
		} finally{
			if(em != null){
				em.close();
			}
		}
		return funcionario;			
	}	

}
